package com.galen.manual.context;

import lombok.Data;

/**
 * 用户上下文信息
 */
@Data
public class UserContext {

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 头像URL
     */
    private String avatarUrl;

    /**
     * 用户等级
     */
    private Integer userLevel;

    /**
     * 是否为管理员
     */
    private Boolean isAdmin;

    /**
     * 管理员角色
     */
    private String adminRole;

    /**
     * 用户状态
     */
    private Integer status;

    /**
     * 用户当前IP地址
     */
    private String clientIpAddress;

    /**
     * 用户当前浏览器信息
     */
    private String userAgent;

    /**
     * 创建空的上下文
     */
    public static UserContext empty() {
        return new UserContext();
    }

    /**
     * 创建用户上下文
     */
    public static UserContext of(Long userId, String username, String nickname, String phone,
                                String avatarUrl, Integer userLevel, Boolean isAdmin,
                                String adminRole, Integer status) {
        UserContext context = new UserContext();
        context.setUserId(userId);
        context.setUsername(username);
        context.setNickname(nickname);
        context.setPhone(phone);
        context.setAvatarUrl(avatarUrl);
        context.setUserLevel(userLevel);
        context.setIsAdmin(isAdmin != null && isAdmin);
        context.setAdminRole(adminRole);
        context.setStatus(status);
        return context;
    }
}